TCC Pattern
Try operations, Confirmation, and Cancellationの略
コーディネーターと呼ばれるサービスが複数サービスへの呼び出しを管理する
コーディネーターはTryフェーズで各サービスに仮登録状態を作るよう要求する
すべてで仮登録状態になったらConfrm/Cancelフェーズに入り、各サービスにConfirmを送り正式登録を要求する
すべてが成功したらコーディネーターは成功を返す
1つでも失敗やタイムアウトしたらCancelを各サービスに送る 仮状態を登録するというのが優れているケースがある
たとえばメールの送信は一度コミットしてしまうと実際に取り消すことはできない
送信準備するだけならキャンセルは容易
課題
処理に時間がかかる可能性がある
Create (Try)
リソース作成
Capture (Confirm)
リソース確定
Cancel (Cancel)
リソースキャンセル